package controllers

import (
	"goseckill/common"
	"goseckill/models"
	"goseckill/service"

	"github.com/kataras/iris/v12"
	"github.com/kataras/iris/v12/mvc"
)

// 接口   一般会抽象BaseController 这里就简单点
type IOrderController interface{

}

type OrderController struct {	
	Ctx iris.Context
	// 服务
	OrderService service.IOrderService
}

//  具体实现
// get post put delete
func (o *OrderController) Get() mvc.View{
	// 查询数据库，获得所有订单信息
	orderList,err := o.OrderService.GetAllOrderInfo()
	if err!=nil {
		o.Ctx.Application().Logger().Debug(err)
	}
	return mvc.View{
		Name:"order/allOrders.html",
		Data: iris.Map{
			"orders":orderList,
		},
	}
}

func (o *OrderController) GetAdd() mvc.View{
	return mvc.View{
		Name: "order/addOrder.html",
	}
}
// post   不过一般来说，订单更新不是后端的功能业务
func (o *OrderController) PostAdd() {

}

func (o *OrderController) PutUpdate() {
	order := models.Order{}
	// 解析
	o.Ctx.Request().ParseForm()
	decoder := common.NewDecoder(&common.DecoderOptions{TagName: "form"})
	if err:=decoder.Decode(o.Ctx.Request().Form, order);err!=nil {
		o.Ctx.Application().Logger().Debug(err)
	}
	// 更新
	if err := o.OrderService.UpdateOrder(&order);err!=nil {
		o.Ctx.Application().Logger().Debug(err)
	} 
	o.Ctx.Redirect("/order/all")
}

